package com.governtalk.backend.service;

import com.governtalk.backend.dto.group.StudyGroupDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface StudyGroupService {
    
    // 获取所有公开的小组
    Page<StudyGroupDto> getAllGroups(Pageable pageable);
    
    // 根据分类获取小组
    Page<StudyGroupDto> getGroupsByCategory(Long categoryId, Pageable pageable);
    
    // 搜索小组
    Page<StudyGroupDto> searchGroups(String keyword, Pageable pageable);
    
    // 获取热门小组
    Page<StudyGroupDto> getPopularGroups(Pageable pageable);
    
    // 获取最新小组
    Page<StudyGroupDto> getLatestGroups(Pageable pageable);
    
    // 获取小组详情
    StudyGroupDto getGroupById(Long groupId);
    
    // 创建小组
    StudyGroupDto createGroup(StudyGroupDto groupDto);
    
    // 更新小组
    StudyGroupDto updateGroup(Long groupId, StudyGroupDto groupDto);
    
    // 删除小组
    void deleteGroup(Long groupId);
    
    // 加入小组
    void joinGroup(Long groupId);
    
    // 退出小组
    void leaveGroup(Long groupId);
    
    // 获取用户加入的小组
    List<StudyGroupDto> getUserGroups(Long userId);
    
    // 检查用户是否已加入小组
    boolean isUserJoined(Long groupId, Long userId);
}

